<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class GoodsController extends Controller
{

    //一个静态类 用于在下拉框显示正确的分类层次
    static public function getCate(){
        $data=DB::table('cate')->select(DB::raw('*,concat(path,cid) as paths'))->orderBy('paths')->get();
        //便利数据  把分类的名字前加入相应的符号
        foreach($data as $k=>$v){
            $l=substr_count($v['path'],',');
            $data[$k]['cname']=str_repeat('|----',$l-1).$v['cname'];

        }
       // dd($data);
        return $data;
    }
    //后台商品添加
    public function getAdd(){

        $data=self::getCate();
        return view('/admin/goods/add',['data'=>$data]);
    }

    //添加商品操作
    public function postInsert(Request $request){
      //拿到传入的数据
        $data=$request->except('_token');
        $data['createTime']=date('Y-m-d',time());
        //检测商品主图是否有文件上传 如果有文件则对文件进行操作后再添加 如果没有就直接添加
        foreach($data as $k=>$v){
           if($request->hasFile($k)){
          
            //获取文件后缀
            $hz=$request->file($k)->getClientOriginalExtension();
            //文件名字
            $temp_name=md5(time()+rand(1111,9999));
            $name=$temp_name.'.'.$hz;
            $data[$k]='/upload/goods/'.$name;
              //进行文件移动
             $request->file($k)->move('./upload/goods',$name);
          }

        }
        //进行添加操作
       $res=DB::table('goods')->insert($data);
        
      if($res>0){
          return redirect("/admin/goods/index")->with('success','添加成功');            
        }else{
           return redirect("/admin/goods/index")->with('error','添加失败');
        }
    }
    
    //显示商品
    public function getIndex(Request $request){
        $info=array();
        $search = $request->input('search');
        $num = $request->input('num',5);


        if(!empty($search)){
            //分页并且把数据传过去
            $data=DB::table('goods')->where('gname','like','%'.$search.'%')->orderBy('gid')->get();
            
        }else{
             $data=DB::table('goods')->orderBy('gid')->get();
        }
        // 
        return view('/admin/goods/index',['data'=>$data,'request'=>$request->all()]);
    }
    //上架操作
    public function getUp(Request $request){

        //获得商品id
        $gid=$request->input('gid');
        //修改状态
        $res=DB::table('goods')->where('gid','=',$gid)->update(['gstatus'=>2]);

        if($res>0){
             return redirect("/admin/goods/index")->with('success','上架成功');
          }else{
             return redirect("/admin/goods/index")->with('error','上架失败');
          }
    }
    //下架操作
    public function getDown(Request $request){
        $gid=$request->input('gid');
        $res=DB::table('goods')->where('gid','=',$gid)->update(['gstatus'=>1]);

        if($res>0){
             return redirect("/admin/goods/index")->with('success','下架成功');
          }else{
             return redirect("/admin/goods/index")->with('error','下架失败');
          }
    }
    //修改商品页面
    public function getEdit(Request $request){
        $data=self::getCate();
        //获取商品id
        $gid=$request->input('gid');
        //得到商品信息
        $info=DB::table('goods')->where('gid','=',$gid)->get();

        return view('/admin/goods/edit',['data'=>$data,'info'=>$info[0]]);
    }
    //修改商品操作
    public function postUpdate(Request $request){
            
        //获取表单传过来的信息
        $data=$request->except('_token');
        //获取商品id
        $gid=$request->input('gid');
        //查询商品信息 用于删除图片
        $info=DB::table('goods')->where('gid','=',$gid)->get();
        //如果没修改图片直接修改
        // dd($data);
        //检测商品主图是否有文件上传 如果有文件则对文件进行操作后再修改 如果没有就直接修改
        foreach($data as $k=>$v){
           if($request->hasFile($k)){
          
            //获取文件后缀
            $hz=$request->file($k)->getClientOriginalExtension();
            //文件名字
            $temp_name=md5(time()+rand(1111,9999));
            $name=$temp_name.'.'.$hz;
            $data[$k]='/upload/goods/'.$name;
            //把原来的图片进行删除
           if(file_exists('.'.$info[0][$k])){
                 unlink('.'.$info[0][$k]);
              }
              //进行文件移动
             $request->file($k)->move('./upload/goods',$name);
          }

        }
        //进行修改操作
       $res=DB::table('goods')->where('gid','=',$gid)->update($data);
        
      if($res>0){
          return redirect("/admin/goods/index")->with('success','修改成功');            
        }else{
           return redirect("/admin/goods/index")->with('error','修改失败');
        }
            
    }
  }

